Analisis dump memori untuk mengungkap proses tersembunyi, koneksi jaringan mencurigakan, dan artefak malware. Challenge ini menguji kemampuan menggunakan tools forensik memori untuk merekonstruksi aktivitas penyerang dari RAM capture.
Scenario: During incident response, a memory dump was captured from the compromised server "challenge" (160.187.165.218). Analysis shows abnormal CPU usage indicating a cryptocurrency miner is running.
Using memory forensic techniques, analyze the memory dump and identify the process name of the
cryptocurrency miner.
Flag Format: SOC{processname}
Example: SOC{crypto.exe}
Step 1: Download Required Files
# Download the forensics package (contains memory.lime.gz + symbols/)
wget http://158.69.63.162/downloads/memory-forensics-package.tar.gz
# Extract (this will take a few minutes - 2.8GB file)
tar -xzf memory-forensics-package.tar.gz
# Decompress memory dump
gunzip memory.lime.gz
# Result: memory.lime (4.0 GB)
memory.lime.gz - Compressed memory dump (2.8 GB)symbols/linux/ubuntu-6.8.0-41-generic.json - Pre-built Volatility3
symbol file (61 MB)Step 2: Install Volatility 3
Step 3: Using Volatility 3 with Symbol Files
Since this memory dump is from Ubuntu 24.04.1 (kernel 6.8.0-41-generic), you
need the symbol file provided in the package. Use the -s flag to point to it:
# Basic syntax
vol -f memory.lime -s symbols/ linux.[PLUGIN]
# OR
python3 vol.py -f memory.lime -s symbols/ linux.[PLUGIN]
# Examples:
vol -f memory.lime -s symbols/ linux.bash.Bash
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat
Pada challenge ini kita diminta untuk menemukan nama proses cryptocurrency miner yang berjalan
di server. Kita bisa menggunakan plugin linux.pslist.PsList atau
linux.pstree.PsTree untuk melihat daftar proses yang berjalan.
vol -f memory.lime -s symbols/ linux.pslist.PsList
Figure 1: Menampilkan daftar proses yang berjalan di server
Dari output tersebut, kita bisa menemukan proses mencurigakan yaitu system-check kenapa saya bisa yakin kalau itu adalah proses cryptocurrency miner? karena proses tersebut dijalankan dari bash yang merupakan parent process dari proses cryptocurrency miner.
Question: I think you are a good defender. you know how to use volatility right?
Our Team has been changing the SSH port far from default port. can you tell what port of SSH is
listened?
Flag Format: SOC{port}
Pada challenge ini kita diminta untuk menemukan port SSH yang digunakan oleh server. Kita bisa
menggunakan plugin linux.sockstat.Sockstat untuk melihat daftar port yang
digunakan.
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep ssh
Figure 1: Menampilkan daftar port yang digunakan oleh server
4026531840 sshd 1858 1858 3 0x979986550000 AF_INET6 STREAM TCP :: 2222 :: 0 LISTEN -
Dari output tersebut, kita bisa menemukan port SSH yang digunakan oleh server yaitu 2222.
Question: Besides the crypto miner, the compromised server was running a
vulnerable Node.js web application. This application was the initial entry point for the
attacker (via command injection vulnerability) that might be not detected in SIEM
Identify the port number that the Node.js web application was listening on.
Flag
Format: SOC{portnumber}
Pada challenge ini kita diminta untuk menemukan port Node.js yang digunakan oleh server. Kita
bisa menggunakan plugin linux.sockstat.Sockstat untuk melihat daftar port yang
digunakan.
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep node
Figure 1: Menampilkan port yang digunakan oleh node
4026531840 100.0node 4237 4237 18 0x9799862e1280 AF_INET STREAM TCP 0.0.0.0 3000 0.0.0.0 0 LISTEN -
Dari output tersebut, kita bisa menemukan port Node.js yang digunakan oleh server yaitu 3000.
Question: After you found the malicious process, is this process have parent? if
does what is the parent process id / PPID
Flag Format: SOC{PPID}
Pada challenge ini kita diminta untuk menemukan parent process id / PPID dari proses yang
terinfeksi. Kita bisa menggunakan plugin linux.pslist.PsList untuk melihat daftar
proses yang berjalan di server.
vol -f memory.lime -s symbols/ linux.pslist.PsList | grep system-check
Figure 1: Menampilkan parent process id / PPID dari proses yang terinfeksi
0x979984fc28c0.04410 4410 4408 king system-check 0 0 0 0 2026-02-05 15:49:37.413130 UTC Disabled
Dari output tersebut, kita bisa menemukan parent process id / PPID dari proses yang terinfeksi yaitu 4408.
Question: [Now that you've identified the miner process name, determine its
Process ID (PID).
The PID is crucial for further analysis of the malicious process's memory, file handles, and
network connections.
Challenge: Find the PID of the system-check process
Hint: The same strings output that showed the process name also contains the PID
Flag
Format: SOC{flag}
Pada challenge ini kita diminta untuk menemukan process id / PID dari proses yang terinfeksi.
Kita bisa menggunakan plugin linux.pslist.PsList untuk melihat daftar proses yang
berjalan di server.
vol -f memory.lime -s symbols/ linux.pslist.PsList | grep system-check
Figure 1: Menampilkan process id / PID dari proses yang terinfeksi
0x979984fc28c0.04410 4410 4408 king system-check 0 0 0 0 2026-02-05 15:49:37.413130 UTC Disabled
Dari output tersebut, kita bisa menemukan process id / PID dari proses yang terinfeksi yaitu 4410.
Question: Cryptocurrency miners connect to mining pools to contribute hashrate
and receive rewards. The connection details are stored in memory.
Analyze the memory dump and find the IP address & Port of the mining pool server that the miner
is connecting to.
Flag Format: SOC{IP:PORT}
Pada challenge ini kita diminta untuk menemukan ip address & port dari mining pool server yang
digunakan oleh miner. Kita bisa menggunakan plugin linux.sockstat.SockStat untuk
melihat
daftar koneksi jaringan yang berjalan di server.
vol -f memory.lime -s symbols/ linux.sockstat.Sockstat | grep 4410
Figure 1: Menampilkan ip address & port dari mining pool server yang digunakan oleh miner
4026531840 100.0system-check 4410 4410 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4411 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4412 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4413 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4414 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4415 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4422 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
4026531840 system-check 4410 4423 12 0x979985f98940 AF_INET STREAM TCP 10.78.108.211 38008 15.235.229.127 3333 ESTABLISHED-
Dari output tersebut, kita bisa menemukan ip address & port dari mining pool server yang digunakan oleh miner yaitu 15.235.229.127:3333.
Question: Cryptocurrency miners send mined coins to a wallet address. This
address is configured in the miner's configuration file (config.json).
Extract the Monero wallet address that the attacker is using to receive mining rewards. This is
critical evidence for tracking the attacker's financial infrastructure
Flag
Format: SOC{WalletAddress}
Pada challenge ini kita diminta untuk menemukan monero wallet address yang digunakan oleh attacker. Disini saya melakukan pencarian string pada memory dump karena sebelumnya kita sudah mengetahui ip address dan port dari mining pool server yang digunakan oleh attacker.
strings memory.lime | grep "15.235.229.127" -B 20 -A 20
Figure 1: Menampilkan hasil pencarian string pada memory dump
Dari output tersebut, Saya mencurigai string pool.supportxmr.com.
pool.supportxmr.com
pool.supportxmr.com:3333
pool.supportxmr.com
Saya melakukan pencarian string lagi pada memory dump untuk menemukan monero wallet address yang digunakan oleh attacker dengan menggunakan string pool.supportxmr.com.
strings memory.lime | grep "pool.supportxmr.com" -B 5 -A 5
Figure 2: Menampilkan hasil pencarian string pada memory dump
Dan BOOM! Dari output tersebut, saya menemukan string yang dicurigai monero wallet address yaitu.
4492zTyp9mMSZK9FbXJzruWUZNmovsaES4CuEgAUw8MhhF9QrfYMbdUWPATRGDyDJCW4Yqc1fJTFkGPvKR9Xm4riNJTtnewy
Setelah saya submit flag tersebut, ternyata betul dugaan saya kalau itu adalah monero wallet address yang digunakan oleh attacker.
Question:Cryptocurrency miners send mined coins to a wallet address. This
address is configured in the miner's configuration file (config.json).
Extract the Monero wallet address that the attacker is using to receive mining rewards. This is
critical evidence for tracking the attacker's financial infrastructure.
Flag
Format: SOC{AmountOfXMR}
Pada challenge ini kita diminta untuk menemukan jumlah monero yang ditambang oleh attacker. Sebelumnya kita sudah mengetahui monero wallet address yang digunakan oleh attacker dan juga mining pool server yang digunakan oleh attacker. selanjutnya saya melakukan OSINT pada mining pool server tersebut dengan mengakses website supportxmr.com dan memasukkan monero wallet address yang digunakan oleh attacker.
Figure 1: Menampilkan hasil OSINT pada mining pool server
Dari hasil OSINT tersebut saya mendapatkan informasi transaksi attacker dengan hint yang di berikan id transaksi terakhirnya 30f5ab1.
Figure 2: Menampilkan hasil OSINT pada mining pool server
Dari informasi transaksi terakhir attacker tersebut, saya mendapatkan informasi jumlah monero yang ditambang oleh attacker yaitu 0.0152.